# 1 主进程和子进程之间不共享全局变量; 各自操作各自的全局变量
# 2 创建子进程时, copy主进程的资源;
# 3 只不过主进程和子进程全局变量的名字相同而已

# 实例步骤
# 1 主进程创建全局变量 my_list
# 2 创建子进程write_data, 子进程read_data
# 3 测试子进程, 主进程各自有自己的内存空间

import time
import multiprocessing

# 全局变量
my_list = []

print('11111111')

def writedata():
    my_list.append('1')
    my_list.append('2')
    my_list.append('3')
    print("writedata->", my_list)


def readdata():
    time.sleep(1)
    print("readdata->", my_list)
    pass


# if __name__ == '__main__':
# 1主进程来出创建p1子进程;p1子进程会copy父进程的所有资源
# 2 在p1拷贝资源的过程中, 从上到下有执行了一遍 看到的代码; 出现现象:p1又在创建p1
print('222222222')
p1 = multiprocessing.Process(target=writedata)
p2 = multiprocessing.Process(target=readdata)

# 2 启动子进程
p1.start()
p2.start()

# 2-2 设置让主进程等待子进程完成任务后,在向下运行
p1.join()  # 让主进程等待p1完成任务 在向下运行;相当于有把主进程给阻塞
p2.join()  # 让主进程等待p2完成任务 在向下运行;相当于有把主进程给阻塞

print('333333333')
print("main->", my_list)

print('444444')

